﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Graphics;
using Etapa1.Objects;
using Etapa1.Screens;
using PloobsEngine.SceneControl;
using PloobsEngine;

namespace Etapa1
{
    public class Etapa1_Main
    {
        private EngineStuff engine;
        private ScreenManager manager;

        public Etapa1_Main()
        {
            using (engine = EngineStuff.CreateAndStartEngine(true))
            {
                engine.SetResolution(800,600);
                //engine.SetResolution(1920,1080);
                //engine.SetResolution(1280, 800);
                //engine.TogleFullScreen();
                engine.EngineLoadContent = LoadContent;                
                engine.Run();
            }
        }

        public void LoadContent()
        {
            manager = engine.ScreenManager;

            //BakerScreen scene = new BakerScreen();
            //TesScreen scene = new TesScreen(engine);
            //PnScreen scene = new PnScreen(engine);
            //SubdivisionScreen scene = new SubdivisionScreen(engine);
            //SoftAlphaModelScreen scene = new SoftAlphaModelScreen();
            //SoftLightScreen scene = new SoftLightScreen();
            //SoftGeomScreen scene = new SoftGeomScreen();
            //SoftModelScreen scene = new SoftModelScreen();
            //SoftScreen scene = new SoftScreen();

            //PTSScene scene = new PTSScene(engine);
            //InputScreen scene = new InputScreen(engine);
            //DrawingScreen scene = new DrawingScreen(engine);
            //ParalaxScreen scene = new ParalaxScreen(engine);
            //CSSScreen scene = new CSSScreen(engine);
            //MovementScreen scene = new MovementScreen(engine);
            //AnimationScreen scene = new AnimationScreen(engine);
            //GeometricPrimitivesScreen scene = new GeometricPrimitivesScreen(engine);
            //CullerScreen scene = new CullerScreen(engine);
            //ObjectsManipulationScreen scene = new ObjectsManipulationScreen(engine);
            //CameraPathScreen scene = new CameraPathScreen(engine);
            //ParticlesScreen scene = new ParticlesScreen(engine);
            //PickingScreen scene = new PickingScreen(engine);
            //EnvMapScreen scene = new EnvMapScreen(engine);
            //MorphedTerrainScreen scene = new MorphedTerrainScreen(engine);
            //NoiseScreen scene = new NoiseScreen();
            //PerlinNoiseScreen scene = new PerlinNoiseScreen();
            //AnimatedTextureScreen scene = new AnimatedTextureScreen(engine);            
            //ExtractInfoScreen scene = new ExtractInfoScreen(engine);
            //CurveScreen scene = new CurveScreen(engine);
            //BezierScreen scene = new BezierScreen(engine);
                        
            //EffectTeste scene = new EffectTeste(engine);
            //WaterScreen scene = new WaterScreen(engine);
            //SerializatorScreen scene = new SerializatorScreen(engine);
            //LoadSerializableScreen scene = new LoadSerializableScreen(engine);            
            //SceneSampleScreen scene = new SceneSampleScreen(engine);
            //DataAq scene = new DataAq(engine);            
            //SteerScreen scene = new SteerScreen(engine);            
            //SteeringBehaviorScreen scene = new SteeringBehaviorScreen(engine);            
            //IslandScreen scene = new IslandScreen(engine);            

            /*Bepu Testes*/
            //ComercioEspacialScreen scene = new ComercioEspacialScreen(engine);
            //ShadowEffectScreen scene = new ShadowEffectScreen(engine);
            //WaterEffectScreen scene = new WaterEffectScreen(engine);
            //SSAOEffectScreen scene = new SSAOEffectScreen(engine);
            //HDREffectScreen scene = new HDREffectScreen(engine);   
            //NoEffectScreen scene = new NoEffectScreen(engine);
            
            //BepuSharperSteerScreen scene = new BepuSharperSteerScreen(engine);
            //IAPathFindingScreen scene = new IAPathFindingScreen(engine);
            //PathSteerFindingScreen scene = new PathSteerFindingScreen(engine);

            //TransparentScreen scene = new TransparentScreen(engine);
            //SoundScreen scene = new SoundScreen(engine);
            //PostEffectsResearchScreen scene = new PostEffectsResearchScreen(engine);
            //WaterCompleteScreen scene = new WaterCompleteScreen(engine);
            //PlanarReflectionRefractionScreen scene = new PlanarReflectionRefractionScreen(engine);
            //LodScreen scene = new LodScreen(engine);
            
            //SandBoxScreen scene = new SandBoxScreen(engine);
            //GravitationalScreen scene = new GravitationalScreen(engine);
            //TornadoScreen scene = new TornadoScreen(engine);
            //PerformanceScreen scene = new PerformanceScreen(engine);
            InstancingScreen scene = new InstancingScreen(engine);
            //LightInterpolationScreen scene = new LightInterpolationScreen(engine);
            //BepuScreen scene = new BepuScreen(engine);
            //ObjectMoverScreen scene = new ObjectMoverScreen(engine);
            //StressBepuScreen scene = new StressBepuScreen(engine);
            //TriggerBepuScreen scene = new TriggerBepuScreen(engine);            
            //CameraScreens scene = new CameraScreens(engine);
            //ShadowScreen scene = new ShadowScreen(engine);
            //FogScreen scene = new FogScreen(engine);
            //SkyBoxScreen scene = new SkyBoxScreen(engine);
            //SkyDomeScreen scene = new SkyDomeScreen(engine);
            //LoaderScreen scene = new LoaderScreen(engine);
            //IdTesteScreen scene = new IdTesteScreen(engine);

            manager.AddScreen(scene);
        }
    }
}


